#include "../lvgl/examples/lv_examples.h"
#include <stdio.h>
#include <stdlib.h>
#include "list.h"
#include <string.h>


lv_obj_t * S2  ;

static lv_style_t * FontStyleInit()
{

	/*Create a font*/
    static lv_ft_info_t info;
    /*FreeType uses C standard file system, so no driver letter is required.*/
    info.name = "/usr/share/fonts/simkai.ttf";
    info.weight = 28;
    info.style = FT_FONT_STYLE_NORMAL;
    info.mem = NULL;
    if(!lv_ft_font_init(&info)) {
        LV_LOG_ERROR("create failed.");
    }

    /*Create style with the new font*/
    static lv_style_t style;
    lv_style_init(&style);
    lv_style_set_text_font(&style, info.font);
    lv_style_set_text_align(&style, LV_TEXT_ALIGN_CENTER);

	return &style ;
}


void BtnCB( lv_event_t * e  )
{
	
	// 指定需要加载的目标界面
	lv_disp_load_scr(S2);

}

void showKeyBox ( lv_event_t * e )
{
	// 获得触发本事件响应函数的事件编码
	lv_event_code_t code  = lv_event_get_code(e);

	// 得到用户数据（键盘指针）
	lv_obj_t * kb = lv_event_get_user_data(e);

	lv_obj_t * ta = lv_event_get_target(e);

	if (code == LV_EVENT_DEFOCUSED)
	{
		/* 失去聚焦 */
		lv_obj_add_flag(kb ,LV_OBJ_FLAG_HIDDEN );
	}
	else if (code == LV_EVENT_FOCUSED)
	{
		/* 得到聚焦 */
		// 显示键盘
		lv_obj_clear_flag(kb , LV_OBJ_FLAG_HIDDEN );

		// 设置键盘的输入目标
		lv_keyboard_set_textarea(kb , ta) ;

	}
}

static void UIInit()
{
	lv_obj_t * IDArea = lv_textarea_create( lv_scr_act() );
	lv_obj_align(IDArea , LV_ALIGN_TOP_MID, 0, 100);
    lv_obj_set_size(IDArea , 300 , 50 );
	// 设置提示占位符
	lv_textarea_set_placeholder_text(IDArea, "user id ...."); 
	lv_textarea_set_one_line( IDArea , true ); // 启动单行模式 

	lv_obj_t * PassedArea = lv_textarea_create( lv_scr_act() );
	lv_obj_align(PassedArea , LV_ALIGN_TOP_MID, 0, 200);
    lv_obj_set_size(PassedArea , 300 , 50 );
	lv_textarea_set_placeholder_text(PassedArea, "user passwd ....");
	lv_textarea_set_one_line( PassedArea , true );
	// 开启密码输入模式
	lv_textarea_set_password_mode(PassedArea, true);



	lv_style_t * fontStyle =  FontStyleInit() ;

	lv_obj_t * BtnLonIn = lv_btn_create( lv_scr_act() );
	lv_obj_align(BtnLonIn , LV_ALIGN_TOP_MID, -100, 300);
    lv_obj_set_size(BtnLonIn , 100 , 70 );

	lv_obj_t * label = lv_label_create( BtnLonIn );
	lv_obj_add_style(label , fontStyle , 0 );
	lv_label_set_text( label , "登录" );


	lv_obj_t * BtnSinIn = lv_btn_create( lv_scr_act() );
	lv_obj_align(BtnSinIn , LV_ALIGN_TOP_MID, 100, 300);
    lv_obj_set_size(BtnSinIn , 100 , 70 );

	label = lv_label_create( BtnSinIn );
	lv_obj_add_style(label , fontStyle , 0 );
	lv_label_set_text(  label , "注册" );


	// 创建键盘
	lv_obj_t * kb = lv_keyboard_create(lv_scr_act());
	lv_obj_add_flag( kb , LV_OBJ_FLAG_HIDDEN );  // 隐藏键盘


	// 添加事件的响应函数
	lv_obj_add_event_cb( IDArea , showKeyBox , LV_EVENT_ALL , kb);
	lv_obj_add_event_cb( PassedArea , showKeyBox , LV_EVENT_ALL , kb);
	lv_obj_add_event_cb( BtnLonIn , BtnCB , LV_EVENT_CLICKED ,  NULL );




	// // 设置键盘的目标输入框
    // lv_keyboard_set_textarea(kb, IDArea);

}


// 另外一个界面（屏幕）初始化
void S2Init()
{
	S2 = lv_obj_create(NULL); // 在虚空创建另外一个屏幕
	lv_obj_set_size(S2 , 800, 480);
	lv_obj_t * ta = lv_textarea_create(S2);
	lv_obj_set_size(ta , 300 , 200);
	lv_obj_set_align( ta , LV_ALIGN_CENTER);
}

void keyTest()
{
	// 初始化两个界面
	UIInit();
	S2Init();

	// 设置默认的初始界面为登录界面
	lv_disp_load_scr(lv_scr_act());
	
}